package com.heima.behavior.service.impl;

import com.heima.behavior.service.ApBehaviorEntryService;
import com.heima.model.behavior.pojos.ApBehaviorEntry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * @author 29143
 */
@Service
public class ApBehaviorEntryServiceImpl implements ApBehaviorEntryService{

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 查询行为实体
     * @param userId  用户id
     * @param equipmentId  设备id
     * @return
     */
    @Override
    public ApBehaviorEntry findByUserIdOrEquipmentId(Integer userId, Integer equipmentId) {
        //判断用户id是否为空
        if (userId!=null) {
            //当用户id不等与null时,构建查询条件
            Query query = Query.query(Criteria.where("refId").is(userId).and("type").is(1));
            //执行条件查询用户信息
            ApBehaviorEntry apBehaviorEntry = mongoTemplate.findOne(query, ApBehaviorEntry.class);
            //判断查询结果是否为空
            if (apBehaviorEntry==null) {
                //当查询结果为空时,设置行为实体信息
                apBehaviorEntry=new ApBehaviorEntry();
                //设置用户id
                apBehaviorEntry.setRefId(userId);
                //设置关联id为用户(1)
                apBehaviorEntry.setType((short) 1);
                apBehaviorEntry.setCreatedTime(new Date());
                //保存信息
                mongoTemplate.save(apBehaviorEntry);
            }
            return apBehaviorEntry;
        }
        //判断设备id是否为空
        if (equipmentId!=null){
            //当设备id不为空时,构建查询条件
            Query query = Query.query(Criteria.where("refId").is(equipmentId).and("type").is(0));
            //执行条件查询行为信息
            ApBehaviorEntry apBehaviorEntry = mongoTemplate.findOne(query, ApBehaviorEntry.class);
            //判断查询结果是否为空
            if (apBehaviorEntry==null) {
                //当查询结果为空时,设置行为实体信息
                apBehaviorEntry=new ApBehaviorEntry();
                //设置设备id
                apBehaviorEntry.setRefId(equipmentId);
                //设置关联id为设备(0)
                apBehaviorEntry.setType((short) 0);
                apBehaviorEntry.setCreatedTime(new Date());
                //保存信息
                mongoTemplate.save(apBehaviorEntry);
            }
            return apBehaviorEntry;
        }
        //当条件都不满足时,直接返回null
        return null;
    }
}
